package cn.stimd.spring.transaction;

/**
 * Spring事务的核心接口。
 * 实现类推荐继承AbstractPlatformTransactionManager，该类定义了传播行为以及对事务同步的处理。
 * 子类只需要实现底层事务某一状态的模板方法。
 * 该接口的默认实现有DataSourceTransactionManager和JtaTransactionManager。
 * <p>
 * Created by Stimd
 * 项目地址：https://gitee.com/stimd/spring-wheel
 * 公众号：Java编程探微
 */
public interface PlatformTransactionManager {
    /**
     * 根据传播行为获取或新建一个事务。隔离级别和超时的属性将应用于新事务上，
     * 此外，事务管理器不一定支持所有的TransactionDefinition的设置，如果不支持将抛出异常。
     */
    TransactionStatus getTransaction(TransactionDefinition definition);

    void commit(TransactionStatus status);

    void rollback(TransactionStatus status);
}
